Method and apparatus to provide guaranteed deployment of applications to nodes in an enterprise

ABSTRACT

A method, system and computer program product for updating distributed applications in a multiple application-server environment, in which at least one server receives updates later than another server and update delivery is tracked by an update tracker in the form of a message history, is disclosed. In a preferred embodiment, an application will be distributed across multiple servers and will receive updates from a central repository across a network or other communication fabric. Responsive to starting an application server in the data processing system, a messaging system is contacted over a secure connection to determine whether an application update distribution occurred while the application server was unavailable to update applications, and, responsive to a determination that the application update distribution occurred, an application is received.

CROSS-REFERENCE TO RELATED APPLICATION

The present application is related to co-pending U.S. patent applicationSer. No. 11/104,258, entitled “METHOD AND APPARATUS TO GUARANTEECONFIGURATION SETTINGS IN REMOTE DATA PROCESSING SYSTEMS” filed on Apr.12, 2005, and incorporated herein by reference in its entirety.

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention relates generally to data processing, and inparticular to data processing in an enterprise composed of a pluralityof nodes. Still more particularly, the present invention provides amethod, system, and computer program product for deploying applicationsto nodes in an enterprise.

2. Description of Related Art

The Internet, also referred to as an “internetwork”, is a set ofcomputer networks, possibly dissimilar, joined together by means ofgateways that handle data transfer and the conversion of messages from aprotocol of the sending network to a protocol used by the receivingnetwork. When capitalized, the term “Internet” refers to the worldwidecollection of networks and gateways that use the TCP/IP suite ofprotocols.

The Internet has become a cultural fixture as a source of bothinformation and entertainment. Many businesses are creating Internetsites as an integral part of their marketing efforts, informingconsumers of the products or services offered by the business orproviding other information seeking to engender brand loyalty. Manyfederal, state, and local government agencies are also employingInternet sites for informational purposes, particularly agencies whichmust interact with virtually all segments of society such as theInternal Revenue Service and secretariats of state. Additionally,providing informational guides and/or searchable databases of onlinepublic records may reduce operating costs. Further, the Internet isbecoming increasingly popular as a medium for commercial transactions.

Currently, the most commonly employed method of transferring data overthe Internet is to employ the World Wide Web environment, also calledsimply “the Web”. Other Internet protocols exist for transferringinformation, such as File Transfer Protocol (FTP) and Gopher, but havenot achieved the popularity of the Web. In the Web environment, serversand clients effect data transaction using the Hypertext TransferProtocol (HTTP), a commonly-known protocol for handling the transfer ofvarious data files (e.g., text, still graphic images, audio, motionvideo, etc.).

The information in various data files is formatted for presentation to auser by a standard page description language, the Hypertext MarkupLanguage (HTML). In addition to basic presentation formatting, HTMLallows developers to specify “links” to other Web resources identifiedby a Uniform Resource Locator (URL). A URL is a special syntaxidentifier defining a communications path to specific information. Eachlogical block of information accessible to a client, called a “page” ora “Web page”, is identified by a URL. The URL provides a universal,consistent method for finding and accessing this information, notnecessarily for the user, but mostly for the user's Web “browser”. Abrowser is a program capable of submitting a request for informationidentified by an identifier, such as, for example, a URL. A user mayenter a domain name through a graphical user interface (GUI) for thebrowser to access a source of content. The domain name is automaticallyconverted to the Internet Protocol (IP) address by a domain name system(DNS), which is a service that translates the symbolic name entered bythe user into an IP address by looking up the domain name in a database.

The Internet also is widely used to transfer applications to users usingbrowsers. With respect to commerce on the Web, individual consumers andbusinesses use the Web to purchase various goods and services. Inoffering goods and services, some companies offer goods and servicessolely on the Web while others use the Web to extend their reach.

Websites are hosted on server data processing systems. Often more thanone server data processing system supports transactions or requestsdirected to a single website. In other words, for a particular URL to awebsite, more than one server data processing system is available tohandle requests from users on the Web. These server data processingsystems are often organized onto a grouping referred to as a cluster orserver cluster. A cluster is a group of server data processing systemsthat provides fault tolerance and/or load balancing. If one server dataprocessing system in the cluster fails, one or more additional serverdata processing systems are still available. Load balancing distributesthe workload over multiple data processing system in the cluster.

These server data processing systems run applications used to handlerequests. For example, the applications for a website may includeapplications used to provide information about goods and services,provide a shopping cart, and process orders. Updates to theseapplications are often made to ensure that the applications andinformation provided by the applications are up to date. These updatesmay include, for example, the installation of new application modules.One example of an installation of a new application module could arisefrom an update of the database tool that accesses data sourcesassociated with a server cluster. Any tools in server data processingsystems that are down, out of service, or otherwise unavailable when aninstallation of a new application module occurs will, under the priorart, be out of synchronization with the rest of the cluster in terms ofthe use of database tools.

As a result, errors may occur when requests are handled by a server thatis out of synchronization with the rest of the cluster. These errors mayinclude, for example, providing incorrect information regarding goodsand services that are offered. Another error, for example, is a “datasource not found” error. Currently, these server data processing systemsremain out of synchronization until a forced resynchronization of thecluster occurs. These resynchronizations require manual intervention byan administrator for the cluster. Further, for this process to occur theadministrator must be aware that the server data processing system isnow available.

Therefore, it would be advantageous to have an improved method,apparatus, and computer instructions for guaranteeing synchronizationinstallation of new application modules in a set of data processingsystems.

SUMMARY OF THE INVENTION

A method, system and computer program product for updating distributedapplications in a multiple application-server environment, in which atleast one server receives updates later than another server and updatedelivery is tracked by an update tracker in the form of a messagehistory, is disclosed. In a preferred embodiment, an application will bedistributed across multiple servers and will receive updates from acentral repository across a network or other communication fabric.Responsive to starting an application server in the data processingsystem, a messaging system is contacted over a secure connection todetermine whether an application update distribution occurred while theapplication server was unavailable to update applications, and,responsive to a determination that the application update distributionoccurred, an application is received.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features believed characteristic of the invention are setforth in the appended claims. The invention itself, however, as well asa preferred mode of use, further objectives and advantages thereof, willbest be understood by reference to the following detailed description ofan illustrative embodiment when read in conjunction with theaccompanying drawings, wherein:

FIG. 1 is a pictorial representation of a network of data processingsystems in which the present invention may be implemented;

FIG. 2 is a diagram of a server cluster in accordance with a preferredembodiment of the present invention;

FIG. 3 is a block diagram of a data processing system that may beimplemented as a server in accordance with a preferred embodiment of thepresent invention;

FIG. 4 is a block diagram illustrating a data processing system in whichthe present invention may be implemented;

FIG. 5 is a diagram of components used to guarantee that applications indata processing systems are up to date in accordance with a preferredembodiment of the present invention;

FIG. 6 is a flowchart of a process for identifying application updatedistributions using a durable subscription in accordance with apreferred embodiment of the present invention;

FIG. 7 is a flowchart of a process for checking for application updatedistributions upon startup in accordance with a preferred embodiment ofthe present invention;

FIG. 8 is a flowchart of a process for announcing application updatedistributions in accordance with a preferred embodiment of the presentinvention; and

FIG. 9 is a flowchart of a process for resending messages in accordancewith a preferred embodiment of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

With reference now to the figures, FIG. 1 depicts a network of dataprocessing systems in which the present invention may be implemented.Network data processing system 100 is a network of computers in whichthe present invention may be implemented. Network data processing system100 contains a network 102, which is the medium that providescommunications links between various devices and computers connectedtogether within network data processing system 100. Network 102 mayinclude various physical mediums, such as wire, wireless communicationlinks, or fiber optic cables. In one embodiment, network 102 can includea Wide Area Network (WAN) such as the Internet. Of course, network 102may alternatively or additionally include other networks, for example,an intranet or a local area network (LAN).

In the depicted example, server cluster 104, storage unit 106, andclients 108, 110, and 112 are connected to network 102. Clients 108,110, and 112 may be, for example, personal computers or networkcomputers. In the depicted example, server cluster 104 provides data,such as boot files, operating system images, and applications to clients108-112. Network data processing system 100 may include additionalservers, clients, and other devices not shown. FIG. 1 is intended as anexample, and not as an architectural limitation for the presentinvention.

FIG. 2 is a diagram of a server cluster in accordance with a preferredembodiment of the present invention. Server cluster 104 contains fabric202, which may be, for example, a bus, an Ethernet network, or someother interconnect system. Server data processing systems 204, 206, 208,210, 212, and 214 connect to fabric 202 in server cluster 104.

A traffic scheduler 216, such as a router, is also connected to fabric202. Although shown as a separate physical component, traffic scheduler216 may alternatively be a logical construct distributed within one ormore of servers 204-214 in server cluster 104.

An initial request from a client 108-112 is received by trafficscheduler 216. Load balancing algorithms and/or other policies may beused to direct this initial request to one of the servers 204-214 inserver cluster 104. Subsequent requests by a client may be handled bytraffic scheduler 216, or alternatively, may be handled directly by theserver 204-214 with which a session is initiated. A session, alsoreferred to as a user session, is the interaction that a user with aunique IP address has with a server during a specified period of time.

Next, FIG. 3 is a block diagram of a data processing system 300 that maybe implemented as a server, such as server 204 in FIG. 2, in accordancewith a preferred embodiment of the present invention. Data processingsystem 300 may be a symmetric multiprocessor (SMP) system including aplurality of processors 302 and 304 that connects to system bus 306.Also, memory controller/cache 308 connects to system bus 306 andprovides an interface to local memory 309. I/O bus bridge 310 connectsto system bus 306 and provides an interface to I/O bus 312. Memorycontroller/cache 308 and I/O bus bridge 310 may be integrated asdepicted.

Peripheral component interconnect (PCI) bus bridge 314 connects to I/Obus 312 and provides an interface to PCI local bus 316. A number ofmodems may be connected to PCI local bus 316. Modem 318 and networkadapter 320 provide communications links to clients 108-112 in FIG. 1via network 102. These components connect to PCI local bus 316 throughadd-in connectors.

Additional PCI bus bridges 322 and 324 provide interfaces for additionalPCI local buses 326 and 328, from which additional modems or networkadapters may be supported. In this manner, data processing system 300allows connections to multiple network computers. A memory-mappedgraphics adapter 330 and hard disk 332 connect to I/O bus 312 asdepicted, either directly or indirectly.

Those of ordinary skill in the art will appreciate that the hardwaredepicted in FIG. 3 may vary. For example, other peripheral devices, suchas optical disk drives and the like, also may be used in addition to orin place of the hardware depicted. The depicted example is not meant toimply architectural limitations with respect to the present invention.

FIG. 4 is a block diagram illustrating a data processing system in whichthe present invention may be implemented. Data processing system 400 isan example of a client computer, such as client computer 108 of FIG. 1.Data processing system 400 employs a peripheral component interconnect(PCI) local bus architecture. Although the depicted example employs aPCI bus, other bus architectures such as Accelerated Graphics Port (AGP)and Industry Standard Architecture (ISA) may be used. Processor 402 andmain memory 404 connect to PCI local bus 406 through PCI bridge 408. PCIbridge 408 also may include an integrated memory controller and cachememory for processor 402. In the depicted example, local area network(LAN) adapter 410, small computer system interface (SCSI) host busadapter 412, and expansion bus interface 414 connect to PCI local bus406 by direct component connection. In contrast, audio adapter 416,graphics adapter 418, and audio/video adapter 419 connect to PCI localbus 406 by add-in boards inserted into expansion slots. Expansion businterface 414 connects to a keyboard and mouse adapter 420, modem 422,and additional memory 424. SCSI host bus adapter 412 connects to harddisk drive 426, tape drive 428, and CD-ROM drive 430.

An operating system runs on processor 402 and coordinates and providescontrol of various components within data processing system 400 of FIG.4. The operating system may be a commercially available operatingsystem, such as Windows XP, which is available from MicrosoftCorporation. An object oriented programming system such as Java may runin conjunction with the operating system and provide calls to theoperating system from Java programmer applications executing on dataprocessing system 400. “Java” is a trademark of Sun Microsystems, Inc.Storage devices such as hard disk 426, contain instructions for theoperating system, the object-oriented programming system, andapplications or programs. Processor 402 loads these instructions intomain memory 404 for execution.

Those of ordinary skill in the art will appreciate that the hardware inFIG. 4 may vary depending on the implementation. Other internal hardwareor peripheral devices, such as flash read-only memory (ROM), equivalentnonvolatile memory, or optical disk drives and the like, may be used inaddition to or in place of the hardware depicted in FIG. 4.

The exemplary architecture depicted in FIG. 4 is not meant to imply anyarchitectural limitation. For example, data processing system 400 alsomay be a notebook computer, hand held computer, PDA, kiosk computer, aWeb appliance, or a multiprocessor data processing system, such as dataprocessing system 300 of FIG. 3.

The present invention provides an improved method, apparatus, andcomputer instructions for updating and synchronizing deployment ofenterprise applications to server data processing systems in a cluster.When an application server process starts, this process contacts amessaging system to determine whether an application update distributionoccurred while the application server process was unavailable. If anapplication update distribution occurred while the server process wasunavailable, the application server process receives application data toimplement the application update distribution so that the applicationsfor the application server process are updated.

FIG. 5 is a diagram of components used on server data processing systems204-214 to guarantee that applications in server data processing systems204-214 are up-to-date in accordance with a preferred embodiment of thepresent invention. In this illustrative example, deployment manager 500,running on any of server data processing systems 204-214 of servercluster 104, is employed to distribute application updates 546, whichcontain updated executable modules for applications 506 and 516 as wellas other updates, from repository 502 to server data processing systems204-214 of server cluster 104. Repository 502 contains the updates inthese examples and is a process running on storage 106. Deploymentmanager 500 identifies server data processing systems 508 and 514(previously two of server data processing systems 204-214) in servercluster 104 using subscription list 522, which resides in storage 106,and records communication with server data processing systems 508 and514 in message history 524, which also resides in storage 106.Subscription list 522 in storage 106 identifies the different dataprocessing systems from among server data processing systems 204-214that are to receive notifications of updates, such as distributions ofapplication updates 546 to server data processing systems 508 and 514from repository 502 in storage 106. In the illustrative examplepresented in FIG. 5, all of the servers in a server cluster 104 insubscription list 522 in storage 106 receive the same distribution of anapplication update 546.

In particular, operating system (OS) 504 on server data processingsystem 508 may receive application updates 546 from deployment manager500 to update applications 506 located within server data processingsystem 508. Applications 506 contain program modules used by applicationserver 510. Application server 510 handles traffic received from remotedata processing systems, such as client 112, utilizing applications 506.

In a similar fashion, operating system 512 in server data processingsystem 514 may receive application updates 546 from deployment manager500 to update applications 516. In these examples, application server518 is a process within server data processing system 514 that handlestraffic, such as requests from browsers located on remote dataprocessing systems such as client 108.

In the illustrative example depicted in FIG. 5, deployment manager 500sends application updates 546 to server data processing system 508 andserver data processing system 514. Previously, if one of these serverdata processing systems were down or out of service or uncontactablewhen deployment manager 500 deployed an application update, that serverdata processing system would be out of synchronization with the otherserver data processing systems. For example, if server data processingsystem 508 were unavailable when an application update 546, replacingmodules in applications 506 and 516 for the server cluster 104, weredeployed, server data processing system 508 would not have the mostup-to-date modules in its applications 506 and would therefore be out ofsynchronization with server data processing system 514. This situationpreviously required a forced resynchronization that was initiated by anadministrator.

Messaging process 520 within deployment manager 500 sends applicationupdates 546 to server data processing systems 508 and 514. Messagingprocess 520 is part of a durable subscriber system, and may communicateusing standard encryption and authentication protocols over secureconnections 542 and 540 with server data processing systems 508 and 514,respectively. Messaging process 520 saves messages to message history524 if they are published or sent while a subscriber is disconnected oris otherwise unavailable. Messaging process 520 delivers these messageswhen the subscriber reconnects to the messaging system.

Operating systems, such as operating system 504 in server dataprocessing system 508 and operating system 512 in server data processingsystem 514 are configured to receive these distributions from messagingprocess 520. These operating systems send a response or acknowledgementto messaging process 520 when the distribution of application updates546 is received from messaging process 520.

For example, if server data processing system 508 is unavailable anddoes not return a reply to a distribution of application updates 546,deployment manager 500 places the identification of that server dataprocessing system and the undelivered message into message history 524.When server data processing system 508 becomes available again,operating system 504 announces its availability to messaging process520. Operating system 504 directs this announcement to messaging process520 over secure connection 542 in these examples. This announcement maybe, for example, contained in a message sent by operating system 504 tomessaging process 520 over secure connection 542 to announce that serverdata processing system 508 is now present. Alternatively, some othertype of connection may be made between operating system 504 andmessaging process 520.

In response to detecting the presence of operating system 504 on serverdata processing system 508, messaging process 520 checks message history524 to determine whether any undelivered application updates 546 arepresent for operating system 504. In this illustrative example,messaging process 520 finds that a message announcing an applicationupdate 546 is undelivered. In response to this determination, messagingprocess 520 sends the undelivered application update 546 to operatingsystem 504 over secure connection 542. In turn, operating system 504retrieves application updates 546 over secure connection 542 to updateapplications 506. As a result, applications 506 are now synchronizedwith the rest of the server data processing systems in server cluster104. This type of deployment uses a “push” to deploy application updates546 to the subscribers. A daemon process running on each server dataprocessing system 204-214 may be used to check message history 524 forchanges if a “pull” mechanism is used by operating system 504.

FIG. 6 is a flowchart of a process for identifying distributions ofapplication updates 546 using a durable subscription in accordance witha preferred embodiment of the present invention. The process illustratedin FIG. 6 may be implemented by deployment manager 500 in a dataprocessing system, such as server data processing system 508 in FIG. 5.

The process begins with a deployment manager 500 listening fordistributions of new application updates 546 (step 600). When anapplication update distribution is present, deployment manager 500receives application updates 546 (step 602) from repository 502. Theseapplication updates 546 are received through an interface such as a webbased interface, an FTP interface, or some other interface. Deploymentmanager 500 pushes applications 546 distributions to subscribingoperating systems 504 and 512 (step 604). For example, step 604 may beused to replace a database engine on all the server data processingsystems 204-214 participating in a server cluster 104. The deploymentmanager 500 pushes the application updates 546 from repository 502 toupdate applications 506 and 516 on application servers 510 and 518 onsubscribing server data processing systems 508 and 514, respectively.

Next, deployment manager 500 makes a determination as to whether thedistribution of application updates 546 is complete (step 606). In step606, the distribution of application updates 546 is considered completeif server data processing systems 508 and 514 have received andinstalled the application update 546. Deployment manager 500 receivesacknowledgements from server data processing systems 508 and 514 toindicate that the distribution of application updates 546 has beencompleted. If an acknowledgement is not received, then deploymentmanager 500 defaults to the assumption that the distribution ofapplication updates 546 has not been completed. Deployment manager 500then checks for additional application updates 546 in repository 502(step 608), with the process returning to step 600 to listen for morenew application updates 546. In step 608, a check is made by determiningif new application updates 546 are present to be distributed.

Turning back to step 606, if a completion notice is not present,deployment manager 500 reports the error (step 610), with the processterminating thereafter.

Next, FIG. 7 is a flowchart of a process for checking for applicationupdates 546 upon startup in accordance with a preferred embodiment ofthe present invention. The process illustrated in FIG. 7 is implementedin operating system 504 of server data processing system 508 in FIG. 5.

The process begins with startup of server data processing system 508(step 700). Next, server data processing system 508 determines whetherthe application updates 546 are present on a queue (step 702) inoperating system 504, which buffers received application updates 546. Instep 702, server data processing system 508 makes a determination as towhether a notification has been received from the messaging process 520of deployment manager 500 that indicates that an application update 546is present. If the an application update 546 is not present on thequeue, server data processing system 508 resumes startup (step 704) withthe process terminating thereafter. With reference again to step 702, ifan application update 546 is present on the queue, server dataprocessing system 508 installs the application update 546 (step 706).The process then moves to step 707, at which server data processingsystem 508 sends a notice of completion to messaging process 520 forstorage in message history 524, with the process returning to step 702.

FIGS. 8 and 9 illustrate messaging used to ensure applications 506 and516 in server data processing systems 508 and 514 remain synchronized.The processes depicted in these figures employ a durable subscriptionsystem in messaging process 520 to maintain applications 506 and 516 ina synchronized state for a group of servers, such as those in a cluster104. FIG. 8 is a flowchart of a process for announcing and disseminatingapplication updates 546 in accordance with a preferred embodiment of thepresent invention. The process in FIG. 8 may be implemented in adeployment system, such as deployment manager 500 in FIG. 5. Morespecifically, the process may be implemented in messaging process 520 inFIG. 5.

The process begins with deployment manager 500 identifying anapplication update 546 in repository 502 (step 800). Messaging process520 then sends messages, announcing the application update 546, to thesubscribers (step 802), such as operating systems 504 and 512. In step802, messaging process 520 sends multiple messages to the subscribers,such as operating systems 504 and 512 regarding the application update546. In step 802, the recipients, such as operating systems 504 and 512,for the application update 546 are selected using a subscription list,such as subscription list 522 in FIG. 5. Deployment manager 500 thenwaits to receive acknowledgements of receipt to the application update546 (step 804) from operating systems 504 and 512. In step 804, theamount of time the process waits depends on the implementation.

Next, a determination is made by deployment manager 500 as to whetherall acknowledgements have been received (step 806). If less than allacknowledgments have been received, deployment manager 500 places any ofoperating systems 504 and 512 from which acknowledgements have not beenreceived in a list (step 808) stored in message history 524, with theprocess terminating thereafter. The process also terminates in step 806when all of the acknowledgements have been received.

FIG. 9 is a flowchart of a process for resending messages in accordancewith a preferred embodiment of the present invention. The process inFIG. 9 may be implemented in a deployment system, such as deploymentmanager 500 in FIG. 5. More specifically, the process may be implementedin messaging process 520 in FIG. 5.

The process begins with deployment manager 500 receiving a serverstartup message (step 900). This message is used to indicate that aserver, such as server data processing systems 508 or 514, which maypreviously have been unavailable, is now available to receive messages.In another example, deployment manager 500 may ping a server, such asserver data processing system 508 or 514, at different intervals todetermine if either server data processing system 508 or 514 is nowavailable. Next, a determination is made as to whether the server dataprocessing system 508 or 514 is on an unacknowledged list in messagehistory 524 (step 902). In these examples, the lack of acknowledgementsis stored in a data structure, such as message history 524 in FIG. 5. Ifthe server, such as server data processing system 508 or 514, is presenton the unacknowledged list in message history 524, deployment manager500 resends pending application updates 546 to that server (step 904),with the process terminating thereafter. The process also terminates instep 902 is the server is not present in the unacknowledged list inmessage history 524.

Thus the present invention provides an improved method, apparatus, andcomputer instructions for managing applications in a set of servers. Themechanism of the present invention involves identifying servers that donot acknowledge an announcement for an application update distribution.When a server is later available, that announcement is resent to theserver with the server then updating its applications. In this manner,the mechanism of the present invention allows for automaticresynchronization of a server's applications when the server starts upor becomes available.

It is important to note that while the present invention has beendescribed in the context of a fully functioning data processing system,those of ordinary skill in the art will appreciate that the processes ofthe present invention are capable of being distributed in the form of acomputer readable medium of instructions and a variety of forms and thatthe present invention applies equally regardless of the particular typeof signal bearing media actually used to carry out the distribution.Examples of computer readable media include recordable-type media, suchas a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, andtransmission-type media, such as digital and analog communicationslinks, wired or wireless communications links using transmission forms,such as, for example, radio frequency and light wave transmissions. Thecomputer readable media may take the form of coded formats that aredecoded for actual use in a particular data processing system.

The description of the present invention has been presented for purposesof illustration and description, and is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the art. Inthese examples, applications are maintained for servers in a cluster.The mechanism of the present invention may also be applied to anygrouping of servers or other data processing systems, logical orphysical. The embodiment was chosen and described in order to bestexplain the principles of the invention, the practical application, andto enable others of ordinary skill in the art to understand theinvention for various embodiments with various modifications as aresuited to the particular use contemplated.

1. A method for updating distributed applications in a multipleapplication-server environment, in which at least one server receivesupdates later than another server, said method comprising: responsive tostarting an application server in the data processing system, contactinga messaging system over a secure connection to determine whether anapplication update distribution occurred while the application serverwas unavailable to update applications; and responsive to adetermination that the application update distribution occurred,receiving an application.
 2. The method of claim 1, wherein said step ofcontacting a messaging system further comprises contacting saidmessaging system with a durable subscription.
 3. The method of claim 1,wherein said step of receiving an application further comprisesreceiving an application from a remote data processing system.
 4. Themethod of claim 1, wherein said step of starting an application serverfurther comprises starting an application server on a data processingsystem which is part of a server cluster.
 5. The method of claim 1,wherein step of contacting a messaging system further comprises: sendingan indication that an application server is present to said messagingsystem, wherein said messaging system returns a message indicating thatsaid application update distribution has occurred while the applicationserver was inactive.
 6. The method of claim 1, wherein said step ofcontacting a messaging system to determine whether an application updatedistribution occurred while the application server was unavailable toupdate applications further comprises: responsive to a presence of anapplication update distribution, sending an application update to a setof application servers; responsive to an inability to deliver saidapplication update to said application server, saving said applicationupdate to form a saved message; responsive to subsequently detecting apresence of said application server, sending said saved message to theapplication server; and sending said application update to saidapplication server, wherein said application server uses saidapplication data to perform said application update distribution,wherein said applications in the application server are updated.
 7. Themethod of claim 6, wherein said step of sending an application update toa set of application servers further comprises a deployment managersending an application update to a set of application servers.
 8. Asystem for updating distributed applications in a multipleapplication-server environment, in which at least one server receivesupdates later than another server, said system comprising: means for,responsive to starting an application server in a data processingsystem, contacting a messaging system over a secure connection todetermine whether an application update distribution occurred while theapplication server was unavailable to update applications; and meansfor, responsive to a determination that the application updatedistribution occurred, receiving an application.
 9. The system of claim8, wherein said means for contacting a messaging system furthercomprises means for contacting said messaging system with a durablesubscription.
 10. The system of claim 8, wherein said means forreceiving an application further comprises means for receiving anapplication from a remote data processing system.
 11. The system ofclaim 8, wherein said means for starting an application server furthercomprises means for starting an application server on a data processingsystem which is part of a server cluster.
 12. The system of claim 8,wherein means for contacting a messaging system further comprises: meansfor sending an indication that an application server is present to saidmessaging system, wherein said messaging system returns a messageindicating that said application update distribution has occurred whilethe appropriate server was inactive.
 13. The system of claim 8, whereinsaid means for contacting a messaging system to determine whether anapplication update distribution occurred while the application serverwas unavailable to update applications further comprises: means for,responsive to a presence of an application update distribution, sendingan application update to a set of application servers; means for,responsive to an inability to deliver said application update to saidapplication server, saving said application update to form a savedmessage; means for, responsive to subsequently detecting a presence ofsaid application server, sending said saved message to the applicationserver; and means for sending said application update to saidapplication server, wherein said application server uses saidapplication date to perform said application update distribution,wherein said applications in the application server are updated.
 14. Thesystem of claim 13, wherein said means for sending an application updateto a set of application servers further comprises means for a deploymentmanager sending an application update to a set of application servers.15. A machine-usable medium having a plurality of instructionsprocessable by a machine embodied therein, wherein said plurality ofinstructions, when processed by said machine, causes said machine toperform a method for updating distributed applications in a multipleapplication-server environment, in which at least one server receivesupdates later than another server, said method comprising: responsive tostarting an application server in a data processing system, contacting amessaging system over a secure connection to determine whether anapplication update distribution occurred while the application serverwas unavailable to update applications; and responsive to adetermination that the application update distribution occurred,receiving an application.
 16. The machine-usable medium of claim 15,wherein said step of contacting a messaging system further comprisescontacting said messaging system with a durable subscription.
 17. Themachine-usable medium of claim 15, wherein said step of receiving anapplication further comprises receiving an application from a remotedata processing system.
 18. The machine-usable medium of claim 15,wherein said step of starting an application server further comprisesstarting an application server on a data processing system which is partof a server cluster.
 19. The machine-usable medium of claim 15, whereinsaid step of contacting a messaging system further comprises: sending anindication that an application server is present to said messagingsystem, wherein said messaging system returns a message indicating thatsaid application update distribution has occurred while the applicationserver was inactive.
 20. The machine-usable medium of claim 15, whereinsaid step of contacting a messaging system to determine whether anapplication update distribution occurred while the application serverwas unavailable to update applications further comprises: responsive toa presence of an application update distribution, sending an applicationupdate to a set of application servers; responsive to an inability todeliver said application update to said application server, saving saidapplication update to form a saved message; responsive to subsequentlydetecting a presence of said application server, sending said savedmessage to the application server; and sending said application updateto said application server, wherein said application server uses saidapplication data to perform said application update distribution,wherein said applications in the application server are updated.